http://abbasrohani.persiangig.com شاهرود دانشکده کشاورزی دانشگاه صنعتی اصول کار و متلب با برنامه نویسی دکتر عباس روحانی) abassrohani@yahoo.com (
MATrix LABoratory MATLAB MATLAB یک محیط نرمافزاری برای انجام محاسبات عددی و یک زبان برنامهنویسی نسل چهارم است. واژه متلب هم به معنی محیط محاسبات رقمی و هم به معنی خود زبان برنامهنویسی مربوطهاست که از ترکیب دو واژه MATrix )ماتریس( و LABoratory )آزمایشگاه( ایجاد شدهاست. این نام حاکی از رویکرد ماتریس محور برنامهاست که در آن حتی اعداد منفرد هم به عنوان ماتریس در نظر گرفته میشوند. کار کردن با ماتریسها در متلب بسیار ساده است. در حقیقت تمام دادهها در متلب به شکل یک ماتریس ذخیره میشوند. برای مثال یک عدد )اسکالر( به شکل یک ماتریس 1*1 ذخیره میشود. یک رشته مانند animalwhale is the biggest به شکل ماتریسی با یک سطر و چندین ستون )که تعداد ستونها به تعداد کاراکترهاست( ذخیره میشود. حتی یک تصویر به شکل یک ماتریس سه بعدی ذخیره میگردد که ب عد اول و دوم آن برای تعیین مختصات نقاط و ب عد سوم آن برای تعیین رنگ نقاط استفاده میشود. فایلهای صوتی نیز در متلب به شکل ماتریسهای تک ستون )بردارهای ستونی( ذخیره میشوند. بنابراین جای تعجب نیست که متلب مخفف عبارت آزمایشگاه ماتریس باشد.
اشتباه به پنجره ها از اگر یکی بسته شد مسیر از توان می زیر دوباره آورد را آنها Desktop>> Desktop Layout>> Default exit quit برای خروج کرد. دستور دو از توان می افزار نرم از پنجره در و دستورات استفاده
در صورتی که بخواهیم در مورد توانید به صورت زیر عمل کنید: استفاده از help می بیاورید دست به اطالعاتی خاص تابعی یا و دستور اگر بر روی doc کلیک کنیم پنجره help باز می شود و ما می توانیم توضیحات تکمیلی را از آنجا دریافت کنیم
helpbrowser دستور دیگر: روش helpwin و
دو دستور مهم دیگر دادن نشان و توضیحات تابع خواهد آن به مربوط doc باعث باز شدن پنجره help شد مثال: کلمات با توان می را کلیدی دلخواه بکار برد تابع نام یا lookfor
دیگر: روش دستور demo
یارب یبایتسد هب هعومجم زا دراوم صاخ هب یکی زا شور یاه ریز لمع یم :مینک -فلا general یتسیل زا عباوت یلک و رپ دربراک ار یارب ام دهاوخ :دروآ >>help general -ب ops یتسیل زا اهرگلمع و یاهرتکاراک صاخ و دربراکرپ ار هب ام ناشن یم :دهد >>help ops -ج یتسیلlang زا راتخاس همانرب یسیون یارب ام ناشن یم :دهد >>help lang -د elmat یتسیل زا یاهسیرتام هیاپ و تباث یاه دروم هدافتسا ار هب ام ناشن یم :دهد >>help elmat elfun -ه یتسیل زا عباوت یضایر هیاپ یارب ام ناشن یم :دهد >>help elfun specfun -و یتسیل زا عباوت یضایر صاخ ار هب ام ناشن یم :دهد >>help specfun
قوانین نام گذاری متغیرها متغیرها باید یک کلمه ای باشند بین حروف آنها فاصله نباشد از نقطه بین حروف آنها استفاده نشود. و MATLAB بین حروف بزرگ و کوچک تفاوت قائل می شود. نام متغیرها باید با یک حرف آغاز شود. A-Z a-z 0-9 و _ نامگذاری در از حروف می توان استفاده کرد. نام متغیرها باید کمتر از 31 کاراکتر باشند.... end return break for از کلمات کلیدی مانند if توان استفاده کرد. نمی و
عملکرد MATLAB محاسبات از کرد دریافت توان می نکته چه این ستون در انجام شده برای محاسبات ریاضی ساده نکته
نحوه مقدار دهی به متغیرها اگر در انتهای سطر از سیمیکالن ; استفاده شود مقدار متغیر نشان داده نمی شود. برای دیدن مقدار آن متغیر باید نام متغیر را تایپ کرد تا در خروجی مقدار متغیر نشان داده شود.
در این نرم افزار تمامی توابع ریاضی تعریف شده اند.
متغیرهای خاص است. :ans نام متغیر پیش فرض نسبت محیط به قطر دایره 3/14=π :pi :i,j برابر نکته: می توان مقادیر هر یک از این متغیرهای خاص را تغییر داد
: کوچکترین عددی که از اختالف دو عدد حاصل شده و برابر است با eps نشان دهنده بی نهایت) infinity ( است مانند 1/0 :Inf,Inf
0 0 یعنی ندارد وجود عددی :Nan, nan فعلی تاریخ به صورت را کامپیوتر دهد. می نمایش رشته :date
برابر 308+1.79e بزرگترین که موجود عدد است. :realmax inf این عدد از بزرگتر عدد است. کوچکترین عدد موجود که برابر 308-2.22e :realmin عدد کوچکتر از این عدد 0 مطلق است. است.
آرایه ها و عملیات ریاضی روی آرایه ها انواع آرایه ها 1- اعداد اسکالر که تک عضوی هستند. بردارها که شامل یک ستون یا یک سطر باشند می به عبارتی یک بعدی هستند. -2
ماتریس ها: از اعضای چیده شده در آرایش یک مربعی تشکیل می شوند. -3 بعد. از دو بیش ابعاد با آرایه ها -4 نکته 1: اعداد در از کاما) ( یا فاصله یک با آرایه یک یکدیگر جدا می شوند. برای جدا کردن سطرها یکدیگر از از سیمیکالن) ( استفاده می شود. نکته 2: نکته 3: برای تبدیل یک آرایه ترانزپوز) (استفاده می شود. عملگر از بالعکس و ستونی به سطری یا ترانهاده
هر سطر از سیمیکالن استفاده شود خروجی در نتیجه داده نشان نکته 4: اگر در انتهای نمی شود.
هدافتسا زا شور یاه یلبق تهج داجیا کی هیارآ نکمم تسا تقو ریگ دنشاب اذل تاروتسد ریز داهنشیپ :دوش یم :Linspace(a,b,c) روتسد نیا c هطقن اب هلصاف یاه رد یواسم هزاب [a,b] دیلوت یم.دنک رادقم شیپ c ضرف ربارب اب 100 یم :دشاب :Logspace(a,b,c) نیا روتسد c هطقن اب هلصاف یاه یمتیراگل رد هزاب [a,b] دیلوت یم.دنک رادقم شیپ c ضرف ربارب اب 50 یم :دشاب c هطقن نیب ات دیلوت یم.دنک
b گام c تا a دستور a:b:c رشته فواصل با و از را اعدادی تولید می کند.
نکته: برای دستیابی به درایه های یک آرایه از اندیس آن استفاده می کنیم:
] [ نکته: برای دستیابی به چند مولفه از یک بردار اندیس های آنها را بین براکت می نویسیم: یا
نکته: برای دستیابی به مولفه اول تا آخر با گام فرضی 3 می نویسیم:
who چند دستور مفید دیگر لیست تمام متغیرهای موجود در فضای کاری را در پنجره دستورات نمایش می دهد whosلیست تمام متغیرهای موجود در فضای کاری همراه با مشخصات آنها در پنجره دستورات نمایش می دهد
لیست تمام متغیرها و مشخصات آنها را می توان از workspace پیدا کرد New variable (Ctrl+N) pen selection(ctrl+d) Import data Save(Ctrl+S) Delete(Delete)
home آورد. بدون پاک کردن دستوات مکان نما را به می clc صفحه پنجره دستورات را پاک می کند. clear all تمامی متغیرهای موجود در فضای کاری را ابتدای پنجره پاک می کند.
تمامی مقادیر کند می ذخیره را متغیرها save تمامی متغیرهای ذخیره شده کند. می بارگذاری را load
و زمان تاریخ جاری یک در را کامپیوتر آرایه ذخیره کند. می clock داده های فوق به صورت زیر می باشند: t=[year month day hour minute seconds] تاریخ جاری دهد: می نشان را دستور date
calendar تقویم هر ماه را نشان می دهد.
و ls محتویات دایرکتوری جاری را نشان می دهد. dir pwd مسیر دایرکتوری جاری را به عنوان خروجی می دهد: برای کپی کردن فایل ها می توان استفاده کرد: copyfile( source, destination ) copyfile
نمایش اعداد با استفاده از دستور format می توان دقت پاسخ ارائه شده از طرف سیستم )خروجی(را تنظیم کرد. اعشار رقم چهار تا اعداد نمایش : format short اعشار رقم چهارده تا اعداد نمایش : format long علمی نماد با اعشار رقم چهار تا اعداد نمایش : format short e علمی نماد با اعشار رقم چهارده تا اعداد نمایش : format long e 5 معنا با رقم تا اعداد نمایش : format short g بامعنا 15 رقم تا اعداد نمایش : format long g اعشار رقم دو تا اعداد نمایش : format bank به صورت اعداد نمایش کسری : format rat
یادآوری: کلیه ارقام 2 1... و 9 جزء رقم های معنی دار هستند ولی صفر در اعدادی که قدرمطلق آنها کوچکتر از 1 باشد اگر بالفاصله بعد از ممیز شروع نشده باشد و یا برای جاهای خالی به کار نرفته باشد جزء رقم های معنی دار به حساب می آیند.
توابع کاربردی در عملیات ماتریس در آن a بردار مرتب :[a,b]=sort(x) بردار x را به صورت صعودی مرتب می کند. شده و b بردار موقعیت اعداد می باشد.
sort دریافت کنید به توصیه: کمک دستور doc توضیحات تابع مورد تر در کامل
طول بردار x :length(x) را برمی گرداند: بزرگترین عدد را در آرایه پیدا می کند b موقعیت عدد را مشخص :[a,b]=max(x) می کند: تحقیق کنید دستور مقابل چه چیزی را بر می گرداند
توجه: نحوه تنظیم کردن تابع بر اساس نوع هدف دلخواه نکته مهم: تغییر داده ها بر اساس یک حد آستانه دلخواه به کمک تابع max max A, k = A i = A i, A i > k A i = k, A i k در حالت کلی
کوچکترین عدد را در آرایه پیدا می کند b موقعیت عدد را :[a,b]=min(x) مشخص می کند: نکته: موارد اشاره شده در اسالید قبلی برای تابع min نیز صادق است)تحقیق نمایید(. :mean(x) میانگین اعداد یک آرایه را مشخص می کند:
و :sum(x) به ترتیب انحراف معیار و مجموع یک آرایه را محاسبه می کند: std(x) اندازه بردار x :[m,n]=size(x) را بر می گرداند:
تابع std به کمک دستور doc توضیحات به طور پیش فرض flag=0 می باشد مورد تر در کامل دریافت کنید تذکر: std(x)=std(x,0,1)
به مثال زیر توجه کنید به کمک این مثال و مثال های قبلی چه نکته می توان متوجه شد
x حاصل ضرب مولفه های prod(x) cumsum(x) حاصل جمع مولفه های x از اول تا هر مولفه cumprod(x) حاصل ضرب مولفه های x از اول تا هر مولفه کمک به دستور doc اطالعات توانید می بیشتری دریافت کنید.
ترکیب بردارهای سطری و ستونی
اعمال جبری در MATLAB
نحوه دستیابی به مولفه های یک ماتریس
مثال: در حالت روبرو x معادل با چه ماتریسی است
توابع ساده ریاضی :abs(x) قدرمطلق x را محاسبه می کند :sign(x) تابع عالمت
)e x تابع نمایی) :exp (x) لگاریتم طبیعی)( ln(x ( :log(x)
)log 10 لگاریتم در مبنای (x)(10 :log10 (x) ) جذر) x :sqrt(x) جذر سطر اول ماتریس x را بدست آورید
(x) :ceil عدد را به سمت باال به نزدیک ترین عدد صحیح گرد می کند. به عبارت دیگر: عدد را به سمت مثبت بینهایت گرد می کند. دستور roundعدد به عبارت دیگر: xرا به نزدیکترین عدد صحیح به خودش گرد می عدد را بسمت نزدیکترین همسایگی گرد می کند کند
ترین نزدیک به پایین به سمت را عدد کند. می گرد عدد صحیح :floor(x) به عبارت دیگر: عدد را بسمت منفی بینهایت گرد می کند
:fix (x) قسمت عدد صحیح را بر می گرداند قسمت اعشاری عدد xرا حذف می کند به عبارت دیگر: عدد را بسمت صفر گرد می کند اعداد برای نکته 1 : مثبت دو fixو تابع floorنتیجه مشابه ای یکدیگر دارند. نکته 2 : اعداد برای منفی دو fixو تابع ceilنتیجه ای مشابه یکدیگر دارند.
2( x را محاسبه می کند) x (x) :pow2 توان 2 باقیمانده تقسیم x بر y بر می گرداند: :rem(x,y)
چند تابع عددی مهم و کاربردی عملکرد تابع تابع primes(n) اعداد اول تا n factor(n) تجزیه n به اعداد اول factorial(n) فاکتوریل n بزرگترین مقسوم علیه مشترک gcd(a,b) A, B کوچکترین مضرب مشترک lcm(a,b) A, B
یاد آوری: اول دوم پرانتز توان سوم ضرب چهارم پنجم اولویت انجام محاسبات ریاضی تقسیم جمع و تفریق به ترتیب از چپ به راست) (
:ones(n,m) آرایه های استاندارد در MATLAB ماتریس n در m را با درایه های یک تولید می کند. را با درایه های صفر تولید می کند. m در n ماتریس :zeros(n,m)
نکته: را با درایه های یک تولید می کند. n در n ماتریس :ones(n) را با درایه های صفر تولید می کند. n در n ماتریس :zeros(n)
را با درایه های قطری یک تولید می کند. n در n ماتریس :eye(n) را با درایه های :rand(n,m) ماتریس n در m تصادفی بین 0-1 تولید می کند.
را با درایه های تصادفی بین 0-1 تولید می n در n ماتریس :rand(n) کند. را با درایه های تصادفی بین 0-1 با m در n ماتریس :randn(n,m) توزیع گوسین تولید می کند.
به صورت را اعداد می قرار سطری بردار یک در تصادفی 1 تا n :randperm(n) دهد. چگونه می توان از این تابع برای تولید یک ماتریس استفاده کرد rand(size(a)) نکته: دستور زیر چه ماتریسی را تولید می کند
برابر هم با قطر و ستون سطر های درایه مجموع که است ماتریسی :magic(n) هستند. نمایید توجه زیر موارد به
داخلی ضرب داخلی :dot ضرب دو بردار را محاسبه می کند.
خارجی ضرب خارجی :cross ضرب دو بردار را محاسبه می کند.
:norm اندازه یک بردار را محاسبه می کند. = نرم تمرین: 3 بردار x را به دو طریق گفته شده بدست آورید
نکته: محاسبه زاویه بین دو بردار
محاسبه تصویر یک بردار بر بردار دیگر
توابع کاربردی در ماتریس ها اگر x :diag(x) یک ماتریس باشد عناصر قطر اصلی را بر می گرداند: نکته: اگر x یک بردار باشد بقیه عناصر صفر هستند: و بردار آن اصلی قطر عناصر که کند می تولید ماتریسی
نکته: تمرین: به کمک آدرس دهی معادل هر یک از موارد را بدست آورید مقابل
:trace(x) حاصل جمع عناصر روی قطر اصلی را محاسبه می کند: :minfo(x) اطالعاتی را در مورد ماتریس مورد نظر بر می گرداند:
:flipud(x) جای سطرها را نسبت به سطر وسط عوض می کند: ستون ها جای را نسبت به ستون وسط عوض می کند: :fliplr(x) تمرین: این دو تابع را در مورد بردارهای سطری و ستونی نیز امتحان کنید
ماتریس را به اندازه 90 درجه در جهت پادساعتگرد می چرخاند: :rot90(x) تحقیق: rot90(x,k) چگونه عمل می کند :tril(x) ماتریس پایین مثلثی تولید می کند:
نکته:
:triu(x) باال ماتریس مثلثی تولید می کند: توضیحات کامل تر را با نوشتن doc triu می توانید مشاهده نمایید
توان می تجزیه این کمک به برای حل دستگاه های معادالت کرد استفاده تجزیه :LU 10x 1 7x 2 = 7 5x 1 x 2 + 5x 3 = 6 3x 1 + 2x 2 + 6x 3 = 4 مثال: تابع )lu.2 نوشتن ماتریس افزوده بدست آوردن ماتریس پایین مثلث)با.1 10x 1 7x 2 = 7 2. 5x 2 + 5x 3 = 2. 5 6. 2x 3 = 6. 2 نکته:
را به تعداد m :repmat(x,m,n) ماتریس x در n تکرار می کند: کند n y می الحاق هم با را و ماتریس دو x الحاق جهت دهنده نشان :cat(n,x,y) است:
:inv(x) ماتریس وارون را محاسبه می کند: سوال: inv(x)*x=x*inv(x)=? :det(x) دترمینان ماتریس مربعی را محاسبه می کند:
مرتبه یک ماتریس را محاسبه می کند: :rank(x) یادآوری: مرتبه یک ماتریس حداکثر تعداد سطرها یا ستون های مستقل خطی آن ماتریس است. k = rank(a,tol) tol تعداد مقادیر تکین یا منفرد A که بزرگتر از هستند را بر می گرداند. توصیه: برنامه تابع باال را بنویسید و نتیجه آن را با تابع مذکور مقایسه کنید
:eig(x) مقادیر و بردارهای ویژه ماتریس مربعی را محاسبه می کند:
:poly(x) چند جمله مشخصه ماتریس x را محاسبه می کند: با اسالید قبلی مقایسه شود
توابع مثلثاتی sin(alpha), cos(alpha), tan(alpha), asin(x), acos(alpha), atan(alpha), sinh(x), cosh(x), tanh(x), asinh(x), acosh(x), atanh(x) alpha بر حسب رادیان می باشد.
داده های ورودی و خروجی آرایه هایی که مولفه های آن )1(true و یا )0(false می باشند. :logical :char آرایه های کارکتری و رشته ای
می را دیگر های آرایه آن های مولفه سلولی های آرایه توانند شامل شوند. :Cell به نماد هر یک از متغیرها توجه نمایید با کلیک کردن بر روی هر یک از متغیرها محتوی آنها نشان داده می شود
نحوه دستیابی به مولفه های یک سلول به مثال مقابل خوب توجه نمایید. سوال: چگونه می توان به هر یک از مولفه عضوهای یک سلول دست یافت های
:structure آرایه های ساختمانی پیشنهاد: به کمک lookfor structure آرایه به مربوط توابع توانید می های ساختمانی پیدا کنید را
single آرایه های نیاز دارند: دقت با عددی های داده به نسبت کمتری فضای :single double
تابع single() می کنند. تابع و محدود دقت با را اعداد () doubleاعداد ایجاد افزوده دقت با را کرد. استفاده کاراکتر یک اسکی عدد نمایش برای توان می تابع دو این از نکته:
:double آرایه های MATLAB می باشند. :int8,16,32,64 بیت است. عددی با دقت double که مرسوم ترین نوع متغیرها در آرایه های اعداد صحیح با عالمت که طول آنها 32 16 8 و 64
خروجی های رشته ای مجموعه کاراکترهای آپوستروف دو بین که عددی یا الفبایی گیرند. می قرار کند. می اشغال را بردار یک از عضو یک رشته کاراکتر هر می شود. ذخیره بایت دو در کاراکتر هر که است نوع از رشته char
درون کند. را آن موقعیت و کند می جستجو کلمه یک برای را رشته یک :findstr مشخص می
را :ischar برای آزمون کارکتر بودن یک متغیر بکار می رود. اگر متغیر ورودی کارکتر باشد یک را بر می گرداند و در غیر اینصورت صفر بر می گرداند.
double از char به یادآوری: متغیرها را می توان با استفاده از دستور double تبدیل کرد. نوع
رایانه وارد را برداری یا و اسکار های داده توان می دستور این از استفاده با :input کرد. کاراکتری های ورودی کردن وارد در مهم نکته
مقایسه رشته ها Strcmp دو رشته را از نظر مساوی بودن با هم مقایسه می کند. این دستور به حروف بزرگ و کوچک حساس می باشد.
کند. می مقایسه هم با حروف بودن کوچک یا بزرگ گرفتن نظر در بدون strcmpi دو رشته را
TF = strncmp('str1', 'str2', n) n امین کاراکتر دو رشته را با هم مقایسه می کند. نکته: این دستور به حروف بزرگ و کوچک حساس است.
آرایه های رشته ای آرایه هایی هستند که مولفه های آنها رشته های کارکتری هستند. نکته مهم: می توان آرایه های دو بعدی ایجاد کرد مشروط بر آنکه سطرهای آنها مساوی باشند.
char ساده ترین راه برای ایجاد آرایه کاراکتری.
از آن استخراج هنگام رشته یک انتهای از را اضافی deblank هر گونه فضای خالی درون یک آرایه پاک می کند.
:strcat دو یا چند رشته را به صورت افقی به هم متصل می کند نکته: این تابع به فضاهای خالی درون رشته ها کاری ندارد ولی فضاهای خالی بین دو رشته را حذف می کند.
به صورت را رشته چند یا دو کند می متصل هم به عمودی :strvcat نکته: رشته این تابع به را حذف می فضاهای کند. دو بین خالی فضاهای ولی ندارد کاری ها رشته درون خالی
isletter اگر یک کاراکتر حرف باشد یک و در غیر اینصورت صفر را بر می گرداند. isspace به ازای فضاهای خالی یک بر می گرداند.
upper و :lower به ترتیب حروف درون یک رشته را به حروف بزرگ و حروف کوچک تبدیل می کند.
رشته در را str جایگزین srch کند. می repl :strrep(str, srch, repl) کند. می تبدیل عدد به را رشته و رشته به را عدد ترتیب به و :int2str num2str
به مثال های زیر توجه کنید
یادآوری: آرایه های ساختمانی) structure (: های مختلف یک ساختمان می توان قرار داد. انواع داده های عددی و کارکتری در فیلد
به صورت زیر می توان المان دیگری به ساختمان قبلی اضافه کرد.
آرایه های سلولی: انواع داده های عددی و کارکتری در سلول می توان قرار داد.
:cell آرایه با ابعاد دلخواه ایجاد کرده و سپس اعضا را مقدار دهی می کنیم.
eval رشته های حاوی اعداد را به مقادیر عددی تبدیل می کند.
input در دستور s داد ولی درصورتیکه از یادآوری: آپوسترف قرار داد. اگر قرار آورده شود دیگر نیازی نیست ورودی s استفاده نشود باید ورودی را در داخل را دو در داخل آپوسترف
دستور تبدیل داده ها و عکس. بر و باینری به دسیمال های داده تبدیل ترتیب به :bin2dec dec2bin
ذخیره سازی و بازیابی داده ها مقادیر موجود در فضای کاری را در فایل matlab.mat ذخیره می کند. :save
تمام مقادیر فضای کاری را در فایل data.mat ذخیره می کند. :save data data.mat c در فایل را و متغیرهای مقادیر f ذخیره می کند. :save data f,c data.mat متعیرهای فایل در موجود کاری فضای به را :load data بارگذاری مقادیر می کند. نام تمام m فایل ها و mat فایل های موجود در مسیر جاری را ارائه می دهد. :What
نکته: با استفاده از current folder فایل های مربوطه را load کرد می توان به مسیرهای مختلف دست پیدا کرد و
تمام text های نوشته شده در پنجره command به نامdiary ذخیره می کند. به جز عالمت << :diary file در فایل text برای خروج از MATLAB استفاده می شود. :exit, quit :helpwin پنجره help را باز می کند. به دنبال یک m فایل مشخص می گردد. :lookfor
ترسیم نمودارهای دو بعدی و سه بعدی :plot متداول ترین تابع رسم نمودارهای دو بعدی است. به طور پیش فرض مقادیر x اعداد طبیعی در نظر گرفته می شود.
از پنجره گرافیکی figure می توان بسیار از تنظیمات نمودار را انجام داد.
انواع مارکرها
مشخصه های رنگ نمودار
مشخصه های خط نمودار
دستورات مفید در رسم منحنی ( title( :xlable( ),ylable(,( به ترتیب برای درج عنوان نمودار برچسب محور y ها و محور x ها در نمودار استفاده می شود. :grid off, grid on به ترتیب برای فعال و غیر فعال کردن خطوط شبکه ای نمودار استفاده می شود. ( ),text(x,y, :gtext( به ترتیب برای درج متن در مختصات (x,y) و نوشتن متن در محلی از متن و سپس انتقال آن به کمک موس به محل دلخواه. :hold off, hold on برای قرار دادن چند منحنی در یک نمودار. :close(n), close all پنجره و شکل شماره n را می بندد. ymax]) :axis([xmin xmax ymin محدوده تغییرات محورهای مختصات را می توان تغییر داد. ( :legend( برای درج راهنمای نمودار در حالت چند نموداری می توان استفاده کرد.
چند دستور مهم دیگر :clc صفحه ورودی دستورات را پاک می کند. :clf تصویر موجود در یک شکل را پاک می کند. :clear برای پاک کردن متغیرهای موجود در فضای کاری استفاده می شود.
رسم چند نمودار در یک شکل
plot(x1,y1,x2,y2,x3,y3, )
plotyy :برای رسم چند نمودار با محورهای y متفاوت
:subplot(m,n,k) امکان رسم چند نمودار را در یک پنجره به ما می دهد. پنجره به یک ماتریس m در n تقسیم می کند و k امین خانه آن را انتخاب می کند.
رسم منحنی های لگاریتمی semilogx, semilogy, loglog(x,y)
نوشتن متون ریاضی سیمبولیک بر روی نمودارها
رسم منحنی های سه بعدی :mesh, surf, plot3, contour از این توابع برای رسم منحنی های سه بعدی استفاده می شود. Mesh Contour Meshc Meshz
Mesh Contour Meshc Meshz
surf(x,y,z), surf(z)
:Plot3 برای رسم منحنی های پارامتریک استفاده می شود.
ezplot(f), ezplot(f,[min,max]), ezplot(f,[xmin,xmax,ymin,ymax]) ezmesh(f,[xmin,xmax,ymin,ymax]) ezsurf(f,[xmin,xmax,ymin,ymax]) این توابع به طور خودکار معادله تابع را در عنوان نمودار قرار می دهند.
ezplot ezplot ezmesh ezsurf
نکته: در صورتیکه تغییرات تابع مورد نظر در بعضی بازه از دستور plot کارآمد نخواهد بود. لذا از دستور fplot ها زیاد استفاده باشد استفاده می شود. fplot(fun,limits,linespec)
:area می شود. از این تابع برای رسم منحنی و نشان دادن سطح زیر منحنی استفاده سطح بین 0 تا y با رنگ خاصی پر می شود area(y) area(x,y,basevalue) basevalue در حالت پیش فرض برابر صفر است که می توان آن را تغییر داد.
:errorbar برای نمایش میزان انحراف داده ها استفاده می شود. را در مقابل خطای E رسم می کند. Y نمودار :errorbar(y,e) را به ازای X در مقابل خطای E رسم می کند. Y نمودار :errorbar(x,y,e) L به ازای X با میزان انحراف از پایین و میزان :errorbar(x,y,l,u) انحراف از باال U نمودار Y رسم می کند.
محاسبات ریاضی چند جمله ای در را جمله چند مقدار ای y نقاط x کند. می محاسبه :polyval ضرایب چند جمله به صورت نزولی مرتب شده اند.
[-1 3] مثال: برای ارزیابی و رسم چند جمله ای f x = x 3 + 4x 2 7x 10 دستورات زیر را وارد می نویسیم: در بازه p ضرایب چند جمله ای
جمع و تفریق دو چند جمله ای f 1 x f 2 x = x 4 3x 3 x + 2 = 4x 3 2x 2 + 5x-16 p1=[1-3 0-1 2] p2=[0 4-2 5-16] p3=p1+p2=[1 1-2 4-14]
ای جمله چند تقسیم و ضرب برای ترتیب به :deconv, conv استفاده می شود.
f x :roots ریشه چند جمله ای را پیدا می کند. مثال: را پیدا کنید ریشه چند جمله ای 10 7x = x 3 + 4x 2
محاسبه مشتق و انتگرال چند جمله ای polyder(p) :polyder(a,b), به ترتیب مشتق چند جمله و مشتق حاصلضرب دو چند جمله ای را محاسبه می کند.
2 نکته: در صورتیکه تعداد آرگومان های خروجی باشد تابع مشتق حاصل تقسیم دو چند جمله ای تابع polyder برابر را محاسبه می کند بر b توجه: مشتق تقسیم a q صورت کسر d مخرج کسر محاسبه می شود
[r,p,k]=residue(b,a) [b,a]=residue(r,p,k) بسط به کسرهای جزئی a,b ضرایب چند جمله ای های صورت و مخرج و p,r به ترتیب بردار ستونی باقیمانده و ریشه و k بردار سطری خارج قسمت است.
4s + 8 s 2 + 6s + 8 = 12 s + 4 + 8 s + 2
محاسبات ریاضی سیمبولیک)نمادین ) در ابتدا باید متغیرها و ثابت های مورد استفاده را معرفی کرد. برای مثال
در صورتیکه x,y اعداد حقیقی و صورت معرفی می کنیم: z عدد غیر حقیقی باشد بدین برای تعریف ثوابت سیمبولیک نیز از sym استفاده می کنیم: نکته مهم: مزیت استفاده از ثابت های نمادین عدم کاهش دقت محاسبات است.
در محاسبات سیمبولیک عملگرهای + - * / ^ مانند محاسبات عددی می باشند. مانند: s و t متغیرهای مستقل هستند. نکته: برای پیدا کردن متغیرهای مستقل از تابع findsym استفاده می شود.
عملیات جمع و تفریق سیمبولیک: عملیات ضرب سیمبولیک: :expand برای بسط حاصلضرب استفاده می شود.
عملیات فاکتورگیری: تابع factor از عبارت سیمبولیک فاکتورگیری می کند.
مخرج مشترک گرفتن: از تابع numden بدین منظور استفاده می شود A s = 1/6 s + 3 1/2 s + 1 + 2/3 s A s = s+2 s 3 +4s 2 +3s N و D به ترتیب صورت و مخرج کسر می باشند
حذف جمالت و عبارت های یکسان از صورت و مخرج کسر: از تابع simplify استفاده می شود. A s = s3 +2s 2 +5s+10 = s+2 s2 +5 s 2 +5 s 2 +5 =s+2
محاسبه معکوس تابع: از تابع finverse استفاده می شود.
ترکیب توابع: از تابع compose استفاده می شود.
تبدیل نمایش چند جمله ای ها از حالت عددی به حالت نمادین و بالعکس: از دو دستور sym2poly(p) و poly2sym(p,s) استفاده می شود.
انجام محاسبات مثلثاتی به صورت سیمبولیک:
محاسبه عددی عبارت سیمبولیک: از تابع subs و double استفاده می شود
رسم عبارت سیمبولیک ezplot(f,xmim,xmax), ezplot(f)
حل معادالت جبری با استفاده از دستور solve solve(eq1,eq2,,var1,var2, )
برای مشتق گیری و انتگرال گیری از توابع سیمبولیک مشتق گیری از دستورات زیر استفاده می کنیم: diff(eq), diff(eq,var), diff(eq,var,n)= dn eq d n v در اینجا eq عبارت سیمبولیک var متغیری که نسبت به آن مشتق گرفته می شود و n مشتق مرتبه nام است.
برای انتگرال گیری از دستورات زیر استفاده می کنیم: int(eq), int(eq,v),int(eq,a,b)= x=b x=a eq v dv در اینجا eq عبارت سیمبولیک v متغیری که نسبت به آن شود و a و b حد باال و حد پایین انتگرالگیری است. انتگرال گرفته می
+ e (kx)2 dx =?
محاسبه حد lim f(x)=limit(f,x,a) x a حد راست تابع حد چپ تابع
سری تیلور و دنباله ها برای محاسبه مجموع یک دنباله از دستور symsum استفاده می شود. متغیر سیمبولیک و a و b محدوده تغییرات v v عبارت سیمبولیک expr می باشد. = k 2 10 k=0
برای محاسبه سری تیلور از دستور taylor استفاده می کنیم:
درجه 12 درجه 5 به طور مثال در اینجا مقایسه بسط تابع واقعی نشان داده می شود. تا تابع یک تیلور با خود را و
برای مقایسه سری با تابع اصلی استفاده کرد. در پنجره دستورات taylortool را می توان از تایپ و سپس ابزار اینتر گرافیگی بزنید. تیلور
funtool را تایپ و سپس اینتر از عملیات توابع استفاده می نکته مهم: در پنجره دستورات از این ابزار برای انجام بسیار بزنید. کنیم.
برای حل می شود. حل معادالت دیفرانسیل با استفاده از دستور dsolve معادالت دیفرانسیل معمولی به صورت سیمبولیک دستور این از استفاده دیفرانسیل v متغیر مستقل cond1,cond2, شرایط dy dx = y2, y 0 = 1 eq1,eq2, معادالت مرزی حاکم می باشند.
y (4) + 5y + 4y = 0 y 0 = 1, y 0 = 1, y (0)=1, y 3 0 = 0 y π =?
تبدیل الپالس این از جزئی و تبدیل عکس تبدیل الپالس: برای حل معادالت استفاده می شود برای تبدیل الپالس از دستور laplace و برای عکس تبدیل از دستور ilaplace استفاده می شود. دیفرانسیل و معمولی تعریف متغیر مستقل تابع برگشتی بر حسب s می باشد
کنترل جریان محاسبات عملگرهای رابطه ای)عملگرهای مقایسه ای(
عملگرهای منطقی
توابع منطقی اگر مقدار موجود در بردار غیر صفر باشد مقدار 1 را بر می گرداند any(x)
1 را بر می گرداند. اگر تمامی مقادیر موجود در بردار غیر صفر باشد مقدار all(x)
موقعیت مولفه های مساوی با صفر از بردار x را برمی گرداند. find(x==0) exist( a ) در صورتیکه a جزء متغیرهای فضای کاری باشد خروجی برابر 1 خواهد شد
به مثال های زیر توجه فرمایید به کمک doc find می توان جزئیات بیشتری را پیدا کرد
در صورتیکه مولفه بردار x تهی باشد خروجی برابر 1 خواهد بود. isempty(x)
isinf(x) isnan(x). خواهد بود در صورتیکه مولفه بردار -inf x و inf باشد خروجی برابر 1 خواهد شد. در صورتیکه مولفه بردار NaN x )تعریف نشده( باشد خروجی برابر 1 سوال: چگونه می توان شمار سطر و ستون موارد باال را پیدا کرد
یکی از کاربردهای بردارهای منطقی رسم نمودارهای ناپیوسته مشتق ناپذیر است. = t x در محدوده 10] [0 sin (t) sin t > 0 0 sin t 0
راه حل مسائلی که در آنها تقسیم بر صفر دارند استفاده از توابع منطقی و جایگزینی صفر با eps است. [-4π 4 π] در محدوده y x = sin (x) x
ترتیب انجام محاسبات عملگر تقدم پرانتز )( 1 ترانزپوز ) (.^ ^ توان 2 3 Plus, minus, ~(NOT) 4 * / \.*./.\ 5 + - 6 : 7 > < <= >= == ~= 8 &(AND) 9 (OR)
File >> New >> Script برنامه نویسی theta = linspace(1.6,4.6); tandata = tan(theta); plot(theta,tandata); xlabel('\theta (radians)'); ylabel('tan(\theta)'); grid on; axis([min(theta) max(theta) -5 5]);
معرفی تابع :input مثال : برای دریافت رشته یا عدد از ورودی استفاده می شود
معرفی تابع :disp استفاده می شود برای نشان دادن محتوی ماتریس رشته ای یا عددی از disp(outmatrix)
نمایش رشته ها به کمک disp char هر ورودی را در یک ردیف قرار می دهد و به جای فضای خالی کاراکتر space قرار می دهد
تابع :num2str این تابع عدد را به رشته تبدیل می کند
دومین پارامتر تابع num2str دقت متغیر را تعیین می کند
نمایش مقادیر متغیرها به کمک تابع fprintf fprintf(outformat,outvariables) انواع تبدیل ها
به کمک یکی از روش های زیر می توان عرض و دقت نتایج تبدیل یافته را تعیین کرد: %wd %w.pf %w.pe تعداد کاراکترهای موجود در عرض نهایی نتایج و p تعداد اعداد سمت راست اعشار را تعیین می کند. w
کنترل برنامه for-end while-end If-else-end Switch-case Break Return, keyboard Pause, pause(n) waitforbuttonpress حلقه های تکرار ساختارهای تصمیم توقف اجرای برنامه
شرط If-else-end if 1 دستورات شرط 1 elsif elsif 2 3 شرط دستورات 2 شرط دستورات 3 else end دستورات 4
مثال 1 مثال 2
طرش switch-case هب روط یلک رد میمصت یریگ یاه هک 3 باختنا رتشیب دوجو درادن زا نیا روتسد هب یاج if هدافتسا.دوش یم زا نیا طرش یارب میمصت یریگ هناگدنچ ساسارب ریداقم فلتخم کی ریغتم هدافتسا.دوش یم دعب زا یارجا ره کی زا تاروتسد دنور یارجا همانرب هب دعب زا end لقتنم یم دوش و ریاس case اه لرتنک یمن دوش و هدافتسا otherwise زا زین یرایتخا.تسا
این برنامه اعداد تصادفی بین 0 تا 9 تشخیص می دهد را تولید می کند و زوج فرد و صفر بودن آن را
حلقه for تعدادی از دستورات به را تعداد دفعاتی قبل از که مشخص شده تکرار می کند.
محاسبه به برنامه انجام زمان مدت کمک دستور etime
حلقه while While End تا زمانیکه شرط لحاظ شده برقرار باشد دستورات تکرار نیز می شوند. شرط دستورات مثال: برنامه ای بنویسید که بتواند نمودار پرتاب سنگی با سرعت 9/8 متر بر مجذور ثانیه ترسیم به ازای اولیه 60 نماید. مقادیر متر بر مختلف زاویه پرتاب ثانیه تحت شتاب ثقل
برنامه محاسبه اپسیلون
دستور break زمانیکه برنامه به این دستور برسد کنترل برنامه بعد از حلقه for منتقل می شود. اگر حلقه ها تو از حلقه داخلی خارج می شود. به اولین خط در تو باشند
دستور pause زمانیکه برنامه به این دستور صفحه کلید را فشار دهید و pause ادامه می یابد. برسد سپس متوقف می ماند اجرای برنامه از تا اینکه شما دستور بعد از به توقف pause(n) مدت n است. ثانیه
در اینجا برنامه متوقف شده و کلید می مانند. هر بار منتظر پس از فشار نشان دادن دادن مقادیر x,y کلیدی از صفحه
دستور return هر گاه متوقف برنامه به می کند. دستور این برسد را برنامه بعدی اجرای خروجی برنامه
دستور keyboard هر گاه برنامه به این دستور برسد اجرای برنامه به طور موقت متوقف می شود و به شما اجازه می دهد عملیات مورد نظرتان انجام دهید. در چنین حالت عالمت k روی صفحه نمایش ظاهر می شود. برای اجرای برنامه دستور return را می توانید وارد کنید. برای نمایش مقدار یک متغیر کافی است که اسم متغیر را وارد کنید لذا مقدار آن متغیر در آن محل از برنامه به ما نشان می دهد. به کمک این دستور می توان مقدار یک متغیر را در حین اجرای برنامه تغییر داد و اثر آن را روی سایر متغیرها مشاهده کرد.
دستور waitforbuttonpress با اجرای این دستور برنامه تا زمانی که دکمه کلید در صفحه باز شده فشرده شود متوقف می موس ماند. یک یا
تابعی فایل ساخت )Function file( برای ایجاد تابعی با کاربرد خاص که در MATLAB وجود ندارد از فایل تابعی استفاده می شود. فایل تابعی مانند m فایل است و تنها در خط اول آن داریم: Function [outputs]=name[inputs] ممکن است توابع برای نمایش داده ها در پنجره دستورات یا نوشتن داده ها در فایل ها ایجاد شوند. در این حالت هیچ مقداری برگردانده نمی شود. ابتدای اینگونه برنامه ها به صورت زیر نوشته می شود: Function name[inputs]
function twosum(x,y) % twosum Add two matrices % and print the result x+y function s = threesum(x,y,z) % threesum Add three variables % and return the result s = x+y+z;
function [s,p] = addmult(x,y) % addmult Compute sum and product % of two matrices s = x+y; p = x*y; توجه! متغیرهای تابع از نوع محلی می باشند
ساخت تابع با استفاده از دستور inline این دستور ما را قادر می سازد که در پنجره دستورات یا در یک m فایل تابعی را ایجاد کرد. مزیت آن در این است که به ذخیره کردن در یک فایل جداگانه نیست. ولی نمی توان inline دیگری فراخوانی کرد. Name of function=inline( function, x1, x2, ) x1,x2, متعیرهای موجود در عبارت هستند.
روش دو بخشی یا تنصیف حل عددی معادله f(x)=0
c جایگزین را زیر فرمول که است کافی تنها و است دوبخشی روش مانند نیز روش کد این قبلی کنیم
خروجی برنامه برای مثال قبلی به کمک روش نا بجایی
حل مسائل آماری به کمک m فایل نویسی مثال. جدول زیر میزان افزایش وزن گوساله های هلشتاین را با متفاوت نشان می دهد. آیا افزایش ویتامین A به جیره غذایی وزن شده است دو نوع جیره غذایی باعث بهبود افزایش 175 132 218 151 200 219 234 149 187 123 248 206 179 206 جیره معمولی جیره معمولی + ویتامین A 142 311 337 262 302 195 253 199 236 216 211 176 249 214 ابتدا می توان داده ها را از اکسل به آنها متلب زیر به شیوه انتقال داد 1. انتخاب محدوده داده ها و کپی کردن در متلب سپس متلب به را ها داده توان می زیر روش به 2. ایجاد متغیر مانند Data انتقال داد
پنجره variable Editor می شود باز آنگاه 3. با کلیک کردن روی متغیر Data داده ها را آنجا paste کنید را در متغیر محل دلخواه ذخیره کرده.4
مقایسه میانگین و محاسبه ویژگی های آماری توصیه: توضیحات کامل تر در مورد هر یک از توابع را می توان به کمک دستور doc پیدا کرد.
خروجی برنامه باال
مقایسه های ویژگی های آماری
خروجی برنامه h=1 نشان دهنده رد فرض صفر در سطح 5 درصد است 0=h نشان دهنده رد فرض جایگزین در سطح احتمال 5 درصد است. اگر %5=α باشد: 1. در صورتیکه >p α باشد فرض صفر در سطح احتمال α درصد رد می شود. 2. در صورتیکه <p α باشد فرض جایگزین در سطح احتمال α درصد رد می شود. نکته: 1. مقدار α را می توان هر مقدار دلخواه در نظر گرفت 2. آزمون را می توان به صورت یک طرفه از راست یا چپ و دو طرفه انجام داد 3. آزمون میانگین را می توان با فرض یکسان بودن و یا عدم یکسان بودن واریانس ها انجام داد و... برای کسب اطالعات بیشتر می توان به help هر یک از توابع مراجعه کرد.
میزان افزایش وزن) kg ( تجزیه واریانس یک طرفه برای تجزیه طرح کامال تصادفی) CRD ( یا طرح با گروه بندی یک طرفه از تجزیه واریانس یک طرفه استفاده می شود. مثال: اثر چهار درجه حرارت مختلف در پرورش و افزایش وزن بودن سایر شرایط مورد مطالعه واقع شده است. افزایش وزن بعد از بره ها به شرط یکسان دو ماه به قرار زیر است. تیمارهای دمای نگهداری بره ها 30 25 20 15 درجه حرارت 1/5 3/0 3/5 1/4 2/0 2/0 3/0 1/80 1/5 4/0 2/8 2/0 2/4 2/5 4/0 1/50 مختلف دماهای بین آیا و محاسبه را واریانس تجزیه جدول نگهداری دارد. وجود داری معنی اختالف
[p,table,stats]=anova1(data) به کمک تابع anova1 تجزیه واریانس یک طرفه قابل بررسی است خروجی این تابع برای داده های مذکور: چونکه p=0/0035>0/01>0/05 بنابراین بین تیمارها در سطح احتمال 1 درصد اختالف معنی داری وجود دارد
خروجی این تابع به شکل زیر نیز نمایش داده می شود:
مقایسه میانگین ها در صورت معنی دار شدن F تیمارها استفاده می شود: دو به دو مقایسه از تیمار بهترین کردن پیدا برای آزمون بعد از اجرای تابع anova1 می multcompare(stats) مقایسات میانگین استفاده کنید: تابع از توانید منظور به
نکته: تابع multcompare(stats) به طور پیش فرض از آزمون LSD در درصد استفاده می کند ولی می توان نوع آزمون مقایسه ای و نیز سطح احتمال طریق زیر تغییر داد: سطح 5 آن را به c = multcompare(stats,param1,val1,param2,val2,...) پارامتر ctype تعیین کننده نوع آزمون است یکی از موارد زیر: و 'dunn-sidak 'bonferroni' 'lsd' 'tukey-kramer 'hsd' or 'scheffe باشد. نحوه استفاده: multcompare(stats,'ctype','scheffe','alpha',0.05) doc multcompare دستور با توان می را بیشتر جزئیات توصیه: کرد جستجو
تجزیه واریانس دو طرفه برای تجزیه واریانس طرح بلوک های کامل تصادفی و انجام مقایسات گروهی از تابع anova2 استفاده می شود. مثال: پژوهشگری می خواهد اثر منابع مختلف ازت را بر عملکرد جو همچنین آزمایش در سه نوع خاک انجام می شود. آیا بین منابع مختلف اختالف معنی داری وجود دارد [p,table,stats] = anova2(x,reps) به عنوان علوفه تعیین کند. ازت از نظر اثر بر عملکرد جو نوع خاک)بلوک( تیمار شماره تیمار I II III شاهد )بدون ازت 1 ) 23/2 24/8 26/7 2 NaNo3 26/1 31/0 33/8 3 Ca(NO3)2 24/1 33/0 35/6 4 CO(NH2)2 25/4 27/4 33/8 نکته: در تابع anova2 باید تعداد بلوک ها )rep( ضریبی از تعداد تیمارها باشد. در غیر اینصورت باید از تابع anovan باید بهره جست. 5 NH4NO3 30/1 31/5 37/1 6 (NH4)SO4 32/1 35/6 41/9
خروجی تابع
خواندن اطالعات از اکسل از تابع xlsread برا خواندن اطالعات از فایل های اکسل می توان استفاده کرد: [num,txt,raw] = xlsread(filename) num آرایه ای است که تنها شامل داده های عددی می باشد. txt آرایه ای از جنس سلول که شامل متن می باشد. raw آرایه ای از جنس سلول که شامل تمام داده های خام می باشد. داریم بنابراین باشد مقابل به صورت اکسل در ما های داده کنید فرض مثال: [num,txt,raw] = xlsread('book1.xlsx') توان می بعدی اسالید در را خروجی مشاهده کرد
نکته: لزومی ندارد از تمام خروجی تابع استفاده کرد مثال num = xlsread('book1.xlsx')
[num,txt,raw] = xlsread(filename, -1) این تابع قابلیت انتخاب آن قسمتی از داده ها را محدوده ای انتخاب کرد از داده های اکسل که ضرورت دارد. توان می یعنی دهد می ما به را [num,txt,raw] = xlsread(filename, sheet) از sheet دلخواه داده ها را وارد متلب کرد توان می تابع این کمک به [num,txt,raw] = xlsread(filename, range) از داده ها را خواند. مثال: num= xlsread('book1.xlsx','a2:a15') ای محدوده تنها توان می [num,txt,raw] = xlsread(filename, sheet,range) این تابع نیز قابلیت خواندن داده ها را از sheet دلخواه و دامنه دلخواه به ما می دهد.
نوشتن اطالعات اکسل در از تابع xlswrite می توان برای نوشتن یا ذخیره داده ها با فرمت دلخواه در اکسل استفاده کرد. این تابع داده های مورد نظر را در فایل مربوطه قرار سلول A1 شروع به نوشتن می کند. مثال: xlswrite(filename,a) از فرض پیش طور به و دهد می xlswrite('book1.xlsx', x, 1, 'E1') )سلول E1 را تابع این متغیر x در sheet1 در سلول E1 و باشد(قرار می ها داده نوشتن آغاز می دهد.
نکته بسیار مهم: زمان نوشتن داده ها در فایل اکسل باید آن فایل بسته شده باشد. تذکر: در صورتیکه فایل مربوطه وجود نداشته باشد متلب آن را ایجاد می کند.
چند نکته مهم در مورد برنامه نویسی 1. تخصیص فضای اولیه) Pre-Allocation ( برای آرایه ها و ماتریس ها برای افزایش سرعت اجرای برنامه مثال. این مدت اجرای این دو برنامه را با هم مقایسه کنید!
.2 هب یاج عباوت وجتسج دننامه find روتسد لداعم یقطنم اهنآ ار هدافتسا.دییامن لاثم رگا یم دیهاوخ رصانع یواسم 10 رد کی رادرب ار ادیپ هدرک و اهنآ ار اب 20 نیزگیاج دینک تقو همانرب ار یارب ادیپ ندرک سیدنا کت کت 10 اه و ینیزگیاج اهنآ اب 20 فلت.دینکن
3. تا جای مانند for برنامه مثال. ممکن از توابع منطقی و نیز اندیس آرایه ها به جای حلقه های استفاده کنید تا سرعت اجرای برنامه افزایش یابد. y > 20 y تابع مقابل می تواند به سه شکل زیر باشد y 20 0 تکرار y = 1 برنامه 3 بهتر از 2 برنامه 2 بهتر از 1 2 3
.4 اب هدافتسا زا تاناکما شخب ردProfiler بلتم همانرب نات ار زا ظاحل ینامز زیلانآ دینک و هاگولگ یاه ینامز )bottleneck( ار ادیپ هدرک و عفر.دییامن نیا شخب بلتم نامز فرص ندش رد ره عبات و ریز عبات ار هب امش یم.دهد لکش ریز ییامن زا ردProfiler بلتم ار ناشن یم :دهد Desktop >> Profiler
تابع fminbnd [a b] f(x) برای پیدا کردن مینیمم استفاده می شود. متعیره یک تابع نسبی فاصله در تابع این از [x,fval]=fminbnd( F,a,b) نقطه x است. fval مقدار مینیمم در فاصله مقدار و مذکور تابع در X
معادالت حل fsolve با غیر خطی حل برای استفاده عددی از معادالت فرض غیر خطی مرتبه f n (x 1, x 2,, x n ) n اولیه ) nd x d = (x 1, x 2,, x از تابع زیر با x n مجهول و استفاده می شود: با fsolve( F, x d ) است تابع فایل نام F را دستگاه به صورت زیر می نویسیمF(x)=0 :
یا اینکه فایل تابعی به صورت زیر ایجاد می کنیم:
و quad انتگرال گیری عددی با استفاده از trapz و انتگرال دو گانه و سه گانه عددی انتگرال تقریبی تابع f(x) را با استفاده از روش ذوزنقه تخمین می زند: trapz trapz(x, y) 2 مقدار دقیق است. برابر با مقدار تخمینی این انتگرال با تابع trapz
را با استفاده از روش سیمسون از حد پایین f(x) به طور عددی انتگرال تابع quad a تا حد باالی b محاسبه می کند. quad( function,a,b) یا
انتگرال گیری دو گانه برای توابع دو متغیره dblquad( function,xmin,xmax,ymin,ymax) π π 0 π sin x. cos y + 1 dxdy =?
انتگرال گیری سه گانه triplequad( function,xmin,xmax,ymin,ymax, zmin,zmax) 0 π 0 1 1 1 y sin x + z cos x dxdy =?
x0=[x1,x2] fzero( F,x0) پیدا کردن صفرهای تابع با استفاده از fzero در فاصله ریشه cos x sin 2 x در بازه 1] [-2.5 بدست آورید
درون یابی P=polyfit(x,y,n) مثال
خطا
استفاده از ابزار Basic fitting
cftool
به MATLAB حل عددی معادالت دیفرانسیل -1 حل تحلیلی << dsolve 2- حل عددی دو صورت کلی می تواند معادله دیفرانسیل را حل ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb کند: نکته: برای شروع کار با ode45 مسئله را حل کنید اگر که جواب ode23 و اگر که جواب نداد از دیگر توابع odeاستفاده کنید. از نداد
ضرف دینک هلداعم لیسنارفید لباقم اب طیارش یزرم هداد هدش ار یم لح میهاوخ :مینک y''+y'+y=cos(x) y(0)=0 y'(0)=1 :رکذت یاربode لح تلاداعم لیسنارفید اب طیارش هیلوا رد نامز ای( )ناکم رفص یم.دشاب ینعی طیارش یزرم هلئسم یمن دناوت رد هطقن یا هب ریغ رفص زا.دشاب :لاثم y''+y'+y=cos(x) y(0)=0 y'(pi)=-1 نیا هنوگ هلئسم اه فورعم دنا هب هلئسم اب رادقم یزرم ای.bvp یارب لح نیا هنوگ تلاداعم زا عباوت ریز هدافتسا :دوش یم bvp4c و bvp5c
یارب لح کی هلداعم لیسنارفید هب شور ode دیاب لبق زا هکنیا همانرب MATLAB رد ار دیسیونب رد یتارییغت هلداعم.داد ماجنا نیرتلااب قتشم رد هلداعم رد رظن یم میریگ لاثم یارب هلداعم لااب قتشم 2 هبترم نیرتلاای هبترم لیسنارفید هلداعم.تسا لااح دیاب هلداعم ار هب دادعت ددع هبترم هب تلاداعم لیسنارفید یاه هبترم لوا لیدبت.دینک هبترم هلداعم ام 2 دوب سپ دیاب ود ریغتم دیدج هب یاهمان وy1 y2 داجیا مینک و هب کمک اهنآ ود هلداعم لیسنارفید هبترم لوا لیکشت :میهدب y=y1 y1'=y2 y2'=cos(x)-y2-y1 لااح هلداعم ام لیدبت هدش هب ود هلداعم لیسنارفید هبترم لوا هب یاهمان y'2 وy'1
اولین قدم در یک function دو معادله دیفرانسیل مرتبه یک را به صورت ستونی در یک بردار مانند out بنویسیم: function out=myfun(x,y) out=[y(2);cos(x)-y(2)-y(1)]; این functionرا باید به نام خود تابع یعنی myfun ذخیره کنید. حاال داخل یک m فایل دیگر یا در داخل command window از دستور ode استفاده می کنیم. فرم کلی دستور odeبه صورت زیر می باشد: پس برای مسئله ما به صورت زیر می شود: )شرایط مرزی مسئله بازه حل مسئله نام تابع@) ode45
نتیجه اجرای دستور باال به صورت زیر یک نمودار خواهد بود. در این گراف 2 معادله دیفرانسیل مثال را تبدیل به 2 معادله مرتبه اول کردیم. پس یکی از این که همان y است و دیگری مربوط به y2 که y می باشد. نمودار وجود دارد زیرا نمودارها مربوط به y1 در این حالت هیچ گونه خروجی عددی در داخل workspace نشان داده نشده است و فقط یک گراف کشیده شده که با رنگ های پیش فرض خود متلب برای ما نمودارها رسم شده و داده های عددی جواب در workspace وجود ندارد. برای رفع این مشکل باید خروجی دستور odeرا برابر دو متغیر قرار دهیم:
>>[x y]=ode45(@myfun,[0 5],[0 1]); متغیر x همان بازه بین 0 تا 5 است که در دستور ode نوشته شد که متلب با یه خاصی این بازه رو تقسیم بندی کرده. ( اگر که خودتان بخواهید گام تعریف کنید بجای ]5 0[ بنویسید: مثال ]0:0.01:5[( متغیر y دارای 2 ستون دوم جواب y2 یا همان y گام باید است. ستون اول همان جواب y1 یا همان y است و ستون می باشد. حال می توانیم نمودار جواب مسئله را رسم نمائیم: >>plot(x,y(:,1),'r','linewidth',2) معادله نمودار جواب را می توان از دستور cftool بدست آورد.
کنید. عرضه دیگه کاربران به بهتر را GUI (Graphical User Interface ( میتوان به کمک ابزار های GUI برنامه نوشته شده برای شروع.1 File >> New >> GUI.2
:Push button نیا رصنع یکیفارگ کی همگد یراشف یم دشاب هک یماگنه هک اب سوم یور نآ راشف دیهدب یتاروتسد هک یارب نآ فیرعت هدش ارجا یم دوش و دعب زا اهر ندرک دیلک هب تلاح یلبق یمرب.ددرگ :Slider اب اج هب اج ندرک هدنزغل لرتنک نآ و رارق نداد نآ رد یناکم یصاخ زا لوط slider یرادقم زا هزاب [min max] باختنا.دوش یم :Radio Button باختنا نیا هنیزگ هایس( ندش هریاد )نآ شزرا radio دیلک ربارب max رادقم یم دوش و مدع باختنا نآ شزرا radio دیلک min ار یم.دنک
و غیر فعال دارد در حالت فعال یعنی آن برابر 1 خواهد شد و در حالت غیر عالمت خوردن مربع فعال بودن آن مقدار :Check Box دو حالت فعال آن کنترل فعال شده و value آن برابر صفر می شود. یا عددی را نشان می مربوط به کنترل قابل دهد که دسترس می توان است. این داد. تغییر را آن :Edit Text این گزینه متن متن از طریق ویژگی string عنوان به اغلب و نوشته یک صورت به را :Static text کنترلی است که متن یا عدد برچسب برای مقادیر جاری نشان می دهد. مانند panel است که در هر لحظه یک کلید می تواند فعال باشد :Button Group
.لاثم نیشام یباسح ار یحارط دینک هک دناوتب کی ددع ار زا ربراک دریگب و ریداقم یتاثلثم نآ ار هبساحم دیامن نوچ زاین هب نتفرگ کی ددع تسا نیاربانب زاین هب کی Edit Text میراد ات میناوتب ددع هاوخلد ار دراو.مینک ود رگلمع Static Text یارب ناشن نداد یجورخ و زین ناشن نداد تملاع یواسم )=( زاین یم.دشاب Radio Button دنچ رد Button Group بلاق زین یارب باختنا عبات یتاثلثم دروم زاین.تسا هحفص GUI ار اب هجوت هب هقیلس دوخ یم ناوت هب یحارط تروص ره.درک
طرح اولیه بر اساس موارد مورد نیاز
حال ابتدا روی Editسپس Text در قسمت string صفر می نویسیم و در قسمت Tag عبارت x_edit تایپ می کنیم
حال روی Static Text اولی کلیک می کنیم در قسمت string عالمت =می نویسیم
حال روی Static Text دومی کلیک می کنیم در قسمت string عالمت 0 می نویسیم در قسمت Tag نیز Result می نویسیم
حال روی Button Group کلیک می کنیم در قسمت Title عبارت Functionمی نویسیم
حال روی Radioکلیک Button می کنیم در قسمت string عبارت sinمی نویسیم در قسمت Tag نیز sin_radiobutton می نویسیم به همین ترتیب برای سایر radiobutton ها عنوان و نام متغیر مناسب تعریف کنید
نتیجه کار تا این مرحله
با کلیک بر روی برنامه اجرا می شود ولی برای هر یک از کلیدهای قرارداده شده برنامه ای نوشته نشده است لذا عمل دلخواه انجام نمی شود بنابراین برای هر یک از کلیدها برنامه آن را تعریف می کنیم
با کلیک راست بر روی هر یک از اشیاء تعریف شده و از طریق callback عمل آن شی را بر حسب نیاز تعریف کرد آن می توان با کلیک راس روی Edit Text و از طریق Callback تابع زیر نشان داده می شود
در خط اول مقدار Editبه Text String خوانده میشود. صورت 1 2 می شود تبدیل عدد به رشته دوم خط در 3 4 در خطوط سه تا پنج بررسی میشود که آیا عددی وارد شده است یا نه اگه هیچ مقداری وارد نشود مقدار صفر به آن اختصاص داده می شود 5 6 می شوند. روز به مقادیر آخر خط در
کد Radio Button به شرح زیر می باشد:
سایت های مفید در مورد یادگیری متلب و موارد مرتبط با آن: www.mathworks.com http://www.matlabonline.com http://matlabsite.com/ http://abbasrohani.persiangig.com/